home *** CD-ROM | disk | FTP | other *** search
- !
- ! Default Healer's Script
- !
- ! (c) DC Software, 1992
- !
-
- !------------------------------------------------------------------------!
- :@TALK ! Talk to the character !
- !------------------------------------------------------------------------!
-
- ! First, say hello.. !
- if NPC.V0 > 0 then
- writeln( "Hello ", player.name, ". What brings you back?" );
- else
- writeln( "Welcome to ", npc.name, ". How may I help you?" );
- endif;
-
- ! Now, set some variables..
- NPC.V0 = 1; ! From know on, remember we've been here
-
- L0 = group.current; ! Current spokesperson !
- L4 = npc.value; ! Cost of healing !
- L5 = npc.value * 2; ! Cost of Cures !
- L6 = npc.value * 5; ! Cost of resurections !
- L7 = npc.value / 2 + 1; ! Cost of removing cursed items !
-
- :LOOP
- group.current = L0;
- L3 = select$( "Heal", L4,
- "Cure", L5,
- "Resurrect", L6,
- "Remove Curse", L7,
- "Talk", -1 ! (talking is free)
- );
-
- ON L3 GOTO DO_HEAL, DO_CURE, DO_RESTORE, CURSE, CHAT;
-
- :CSTOP
- writeln( "'Till we meet again.." );
- STOP;
-
- !
- ! Heal Wounds..
- !
- :DO_HEAL
- writeln( "Heal who?" );
- L3 = select( group );
- IF L3 < 0 GOTO LOOP;
-
- if player.hp >= player.mhp then
- writeln( player.name, " is not hurt. You waste my time." );
- goto LOOP;
- endif;
-
- if player.hp = 0 GOTO DEADGUY;
- if group.gold < L4 GOTO NOMONEY;
-
- writeln( player.name, " is now healed." );
- voice( "OkSpell", 1000 );
- dec( group.gold, L4 );
- player.hp = player.mhp; ! Reset the hit points to maximum hit points !
- goto LOOP;
-
-
- !
- ! Cure poisoning...
- !
- :DO_CURE
- writeln( "Cure whom?" );
- L3 = select( group );
- IF L3 < 0 GOTO LOOP;
-
- if player.hp = 0 GOTO DEADGUY;
-
- if NOT player.poisoned then
- writeln( player.name, " is not poisoned. You waste my time." );
- goto LOOP;
- endif;
-
- if group.gold < L5 GOTO NOMONEY;
-
- writeln( player.name, " is now cured." );
- voice( "OkSpell", 1000 );
- dec( group.gold, L5 );
- player.poisoned = 0;
- goto LOOP;
-
- !
- ! Remove Cursed Item..
- !
- :CURSE
- writeln( "Who has the cursed item?" );
- L3 = select( group );
- IF L3 < 0 GOTO LOOP;
-
- writeln( "Remove what item?" );
- L3 = select( player.body );
- if L3 < 0 goto LOOP;
-
- if curritem.cursed then
- if group.gold < L6 GOTO NOMONEY;
- dec( group.gold, L6 );
- writeln( "The ", curritem.type, " has been removed." );
- voice( "OkSpell", 1000 );
- move( curritem, player );
- else
- writeln( "The ", curritem.name, " is not cursed." );
- endif;
-
- goto LOOP;
- !
- ! or, if you so wish, you can handle each type separately..
- !
- ! on L3 goto :Weapon, :Armor, :Shield, :Ring, :Amulet, :Staff;
- ! goto LOOP;
- ! :Weapon move( player.weapon, player ); goto LOOP;
- ! :Armor move( player.armor , player ); goto LOOP;
- ! :Shield move( player.shield, player ); goto LOOP;
- ! :Ring move( player.ring , player ); goto LOOP;
- ! :Amulet move( player.amulet, player ); goto LOOP;
- ! :Staff move( player.staff , player ); goto LOOP;
-
- !
- ! Resurect the dead..
- !
- :DO_RESTORE
- writeln( "Resurrect who?" );
- L3 = select( group );
- IF L3 < 0 GOTO LOOP;
-
- if player.hp <> 0 then
- writeln( player.name, " is not dead. You waste my time." );
- goto LOOP;
- endif;
-
- if group.gold < L7 GOTO NOMONEY;
-
- voice( "HighWind", 1000 );
- writeln( "First, the healer treats the dead body of ", player.name );
- writeln( "treating every wound. Then he replaces the blood in the body" );
- writeln( "with a clear substance. Finally a resurrection spell brings" );
- writeln( "your friend to life." );
- voice( "Thunder", 1000 );
- voice( "WakeCall", 1000 );
-
- player.poisoned = 0;
- player.hp = player.mhp;
- dec( group.gold, L7 );
- goto LOOP;
-
- :DEADGUY
- voice( "Dead" );
- writeln( "Dr McCoy: He's dead Jim.." );
- goto LOOP;
-
- :NOMONEY
- voice( "Broke" );
- writeln( "Sorry, you can't afford it." );
- goto LOOP;
-
- !
- ! Handle conversation..
- !
- :CHAT
- writeln( "What would you like to talk about?" );
-
- :CHAT1
- L3 = getstr("Name","Heal","Cure","Resurrec","Remove","Curse","Join","Bye");
- if L3 = -1 then
- writeln( "Ok." );
- goto LOOP; ! Pressed ESCape !
- endif;
-
- ! First, see if the keyword typed is in the character's text block !
- if dotext( S0 ) then
- if L3 = 7 then
- STOP;
- endif;
- goto CHAT1;
- endif;
-
- ! It didn't, so try the predefined ones..
- on L3 goto CName, DO_HEAL, DO_CURE, DO_RESTORE, CURSE, CURSE, JOINP, CSTOP;
-
- ! Nope, try a 'DEFAULT' line
- if not dotext( "DEFAULT" ) then
- writeln( "I don't know anything about that!" );
- endif;
- goto CHAT1;
-
- :CName
- writeln( "My name is ", npc.name, "." );
- goto CHAT1;
-
- :JOINP
- writeln( "Sorry. I'm dedicated to my patients.." );
- goto CHAT1;
-
-